package com.ruicar.afs.cloud.basic.common.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruicar.afs.cloud.basic.common.condition.BasicInsuranceInfoCondition;
import com.ruicar.afs.cloud.basic.common.condition.ContractBasicListVO;
import com.ruicar.afs.cloud.basic.common.condition.QueryContractListCondition;
import com.ruicar.afs.cloud.basic.contractcancel.condition.BasicCancelInfoCondition;
import com.ruicar.afs.cloud.basic.contractcancel.vo.BasicCancelInfoVo;
import com.ruicar.afs.cloud.basic.costexempt.condition.BasicCostExemptCondition;
import com.ruicar.afs.cloud.basic.costexempt.vo.BasicExpenseRecordDetailVo;
import com.ruicar.afs.cloud.basic.costexemptbill.condition.BasicCostExemptBillCondition;
import com.ruicar.afs.cloud.basic.costexemptbill.vo.BasicCostExemptBillInfoVo;
import com.ruicar.afs.cloud.basic.common.entity.BasicMainInfo;
import com.ruicar.afs.cloud.basic.detail.vo.QueryListVO;

import java.util.List;

/**
 * @author: Lee
 * @date 2020-05-30 04:34:35 
 * @description 
 */
public interface BasicMainInfoService extends IService<BasicMainInfo> {

    /**
     *多条件查询已激活合同
     * @param condition
     * @return
     */
    List<ContractBasicListVO> findActivatedContractList(QueryContractListCondition condition);
    /**
     *多条件查询已激活合同(获取条数)
     * @param condition
     * @return
     */
    Integer findActivatedContractCount(QueryContractListCondition condition);
    /**
     * 多条件查询合同信息
     * @param page
     * @param qclc
     * @return
     */
    IPage<List<QueryListVO>> queryContractInfo(Page page, QueryListVO query);

    IPage<List<BasicCancelInfoVo>> getBasicCancelList(Page page, BasicCancelInfoCondition condition);

    IPage<List<BasicCancelInfoVo>> getBasicCancelLoanList(Page page, BasicCancelInfoCondition condition);

    IPage<List<BasicCostExemptBillInfoVo>> getBasicCostBillList(Page page, BasicCostExemptBillCondition condition);

    IPage<List<BasicCostExemptBillInfoVo>> getBasicCostLoanList(Page page, BasicCostExemptBillCondition condition);

    /**
     * 多条件查询可做豁免费用的合同信息
     * @param page
     * @param
     * @return
     */
    IPage <List<ContractBasicListVO>> getCanCostExemptListByCondition(Page page, BasicCostExemptCondition condition);

    /**
     * 根据合同号获取该合同可做豁免费用列表
     * @param page
     * @param
     * @return
     */
    IPage <BasicExpenseRecordDetailVo>  getCanCostExemptListByContractNo(Page page, BasicCostExemptCondition condition);

    List queryContractCount(BasicInsuranceInfoCondition condition);

    /**
     * 定时发送提前还款数据
     */
    public void sendRepayMent();

    /**
     * 定时发送合同取消数据
     */
    public void sendContractCancel();

}
